const { userApi } = require('../../utils/api');

Page({
  data: {
    searchKeyword: '',
    currentCategory: 'all',
    contacts: [],
    filteredContacts: [],
    loading: false,
    totalContacts: 0,
    teacherCount: 0,
    studentCount: 0,
    parentCount: 0
  },

  onLoad: function (options) {
    console.log('通讯录页面加载');
    this.loadContacts();
  },

  onShow: function () {
    console.log('通讯录页面显示');
    this.loadContacts();
  },

  // 加载联系人列表
  async loadContacts() {
    this.setData({ loading: true });
    
    try {
      const contacts = await userApi.getAllUsers();
      console.log('获取联系人列表成功:', contacts);
      
      // 处理联系人数据
      const processedContacts = contacts.map(contact => ({
        ...contact,
        role: this.getRoleText(contact.identity),
        avatar: this.getAvatarByRole(contact.identity)
      }));
      
      // 统计各类型联系人数量
      const stats = this.calculateContactStats(processedContacts);
      
      this.setData({
        contacts: processedContacts,
        filteredContacts: processedContacts,
        ...stats,
        loading: false
      });
      
      this.filterContacts();
    } catch (error) {
      console.error('获取联系人列表失败:', error);
      this.setData({ loading: false });
      
      wx.showToast({
        title: '加载失败',
        icon: 'none'
      });
    }
  },

  // 获取角色文本
  getRoleText(identity) {
    const roleMap = {
      'teacher': '老师',
      'student': '学生',
      'parent': '家长',
      'admin': '管理员'
    };
    return roleMap[identity] || '未知';
  },

  // 根据角色获取头像
  getAvatarByRole(identity) {
    const avatarMap = {
      'teacher': '👨‍🏫',
      'student': '👨‍🎓',
      'parent': '👨‍👩‍👧‍👦',
      'admin': '👨‍💼'
    };
    return avatarMap[identity] || '👤';
  },

  // 计算联系人统计
  calculateContactStats(contacts) {
    const stats = {
      totalContacts: contacts.length,
      teacherCount: 0,
      studentCount: 0,
      parentCount: 0
    };
    
    contacts.forEach(contact => {
      switch (contact.identity) {
        case 'teacher':
          stats.teacherCount++;
          break;
        case 'student':
          stats.studentCount++;
          break;
        case 'parent':
          stats.parentCount++;
          break;
      }
    });
    
    return stats;
  },

  // 搜索输入
  onSearchInput(e) {
    this.setData({
      searchKeyword: e.detail.value
    });
    this.filterContacts();
  },

  // 清除搜索
  clearSearch() {
    this.setData({
      searchKeyword: ''
    });
    this.filterContacts();
  },

  // 切换分类
  switchCategory(e) {
    const category = e.currentTarget.dataset.category;
    this.setData({
      currentCategory: category
    });
    this.filterContacts();
  },

  // 筛选联系人
  filterContacts() {
    const { contacts, searchKeyword, currentCategory } = this.data;
    let filtered = [...contacts];
    
    // 按分类筛选
    if (currentCategory !== 'all') {
      filtered = filtered.filter(contact => contact.identity === currentCategory);
    }
    
    // 按关键词搜索
    if (searchKeyword) {
      const keyword = searchKeyword.toLowerCase();
      filtered = filtered.filter(contact => 
        contact.name.toLowerCase().includes(keyword) ||
        contact.phone.includes(keyword) ||
        contact.role.toLowerCase().includes(keyword)
      );
    }
    
    this.setData({
      filteredContacts: filtered
    });
  },

  // 点击联系人
  onContactTap(e) {
    const { contact } = e.currentTarget.dataset;
    console.log('点击联系人:', contact);
    
    wx.showActionSheet({
      itemList: ['查看详情', '拨打电话', '发送消息'],
      success: (res) => {
        switch (res.tapIndex) {
          case 0:
            this.viewContactDetail(contact);
            break;
          case 1:
            this.callContact(contact.phone);
            break;
          case 2:
            this.messageContact(contact.userid);
            break;
        }
      }
    });
  },

  // 查看联系人详情
  viewContactDetail(contact) {
    wx.showModal({
      title: contact.name,
      content: `角色：${contact.role}\n电话：${contact.phone}\n邮箱：${contact.email || '未设置'}`,
      showCancel: false
    });
  },

  // 拨打电话
  callContact(phone) {
    wx.makePhoneCall({
      phoneNumber: phone,
      success: () => {
        console.log('拨打电话成功');
      },
      fail: (err) => {
        console.error('拨打电话失败:', err);
        wx.showToast({
          title: '拨打电话失败',
          icon: 'none'
        });
      }
    });
  },

  // 发送消息
  messageContact(userId) {
    wx.showToast({
      title: '消息功能开发中',
      icon: 'none'
    });
  },

  // 添加联系人
  addContact() {
    wx.showToast({
      title: '添加联系人功能开发中',
      icon: 'none'
    });
  },

  // 导入花名册
  importRoster() {
    wx.showToast({
      title: '导入花名册功能开发中',
      icon: 'none'
    });
  },

  // 管理审核
  manageAudit() {
    wx.showToast({
      title: '进班审核功能开发中',
      icon: 'none'
    });
  },

  // 管理分组
  manageGroups() {
    wx.showToast({
      title: '学生分组功能开发中',
      icon: 'none'
    });
  },

  // 打开消息
  openMessages() {
    wx.showToast({
      title: '私信功能开发中',
      icon: 'none'
    });
  },

  // 邀请成员
  inviteMembers() {
    wx.showToast({
      title: '邀请功能开发中',
      icon: 'none'
    });
  }
})
